<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="../book.css" charset="ISO-8859-1" type="text/css">
<title>Support for SVN Protocols</title>
</head>
<body>
<h1>Support for SVN Protocols</h1>
<h2>Overview</h2>
<p>
    In general all SVN repository access protocols are supported.  The nature of the
    support can vary depending on the adapter you have chosen in your preferences.
    This document will attempt to outline those issues.
</p>
<h2>file:// (ra_local)</h2>
<p>
    The file:// protocol is only supported by the JavaHL adapter.  If you are using the
    SVNKit adapter, it is recommended that you setup and run a local <a
    href="http://svnbook.red-bean.com/en/1.1/ch06s03.html">svnserve</a> instance
    so that you may use the svn:// protocol.
</p>
<h2>svn:// (ra_svn)</h2>
<p>
    The svn:// protocol is fully supported by both adapters.  There are no issues or 
    considerations to take into account.
</p>
<h2>svn+ssh:// (ra_svn)</h2>
<p>
    The svn+ssh:// protocol is fully supported by both adapters.  However there are
    significant differences in the implementation that should be taken into account.
</p>
<dl>
    <dt>JavaHL</dt>
    <dd>
		JavaHL uses the SVN libraries, consequently it is configured using the same techniques
		as the SVN command line.  SSH is handled via an external client which has to be manually
		configured in the <a href="http://svnbook.red-bean.com/en/1.1/ch07.html#svn-ch-7-sect-1">
		Runtime Configuration Area.</a>  Any support for prompting for a client
		certificate or passphrase is entirely dependent on the SSH client used.  Consequently,
		using JavaHL in this scenario is best suited for those users that already have an SSH
		client configured and are using some form of SSH keyagent to manage connections.
    </dd>
    <dt>SVNKit</dt>
    <dd>
		SVNKit implements SSH connections using the Ganymed Java SSH library.  The Ganymed
		library only support the SSH-2 protocol and client certificates must be in
		the OpenSSH format.  A major advantage to using SVNKit is that it
		will dynamically prompt you for all SSH connection information as shown here:
		<br /><br />
	    <img src="../images/ssh-credentials.png" />
    </dd>
</dl>
<h2>http(s):// (ra_dav)</h2>
<p>
    The http(s):// protocol is fully supported by both adapters.  However there are
    subtle differences in the implementation that should be taken into account, primarily
    when dealing with SSL (https://) connections.
</p>
<dl>
    <dt>JavaHL</dt>
    <dd>
    	JavaHL uses the SVN libraries for repository access, which means that it uses Neon and
    	the OpenSSL library for accessing SSL-secured connections.  Generally, this offers
    	very good compatability with various HTTP servers, SSL certificates and implementations.
    	JavaHL supports prompting the user to accept the server certificate, but it does not support
    	prompting the user to provide a client certificate.  Configuration of SSL certificates as well
    	as HTTP proxy information can be performed in the <a 
    	href="http://svnbook.red-bean.com/en/1.1/ch07.html#svn-ch-7-sect-1"> Runtime Configuration
    	Area.</a>
    </dd>
    <dt>SVNKit</dt>
    <dd>
		SVNKit implements http(s):// connections using the classes and methods that are part of
		J2SE.   Some JDK versions don't support SSL server certificates longer than 1024 bytes or
		don't support certain Cypher Suites. If you're experiencing problems accessing a SVN 
		repository over SSL connection (via https protocol) consider using the latest JDK version
		and upgrading the JDK JCE package (Cryptotgraphic Extension) to an "unlimited strenght" one.
		Read this <a href="http://java.sun.com/products/jce/javase.html">article</a> for more details
		on how to install JCE.  Configuration of SSL certificates as well
    	as HTTP proxy information can be performed in the <a 
    	href="http://svnbook.red-bean.com/en/1.1/ch07.html#svn-ch-7-sect-1"> Runtime Configuration
    	Area.</a>  One notable benefit that SVNKit offers over JavaHL is that it supports prompting
    	the user for SSL client certificates.
		<br /><br />
	    <img src="../images/ssl-client-cert.png" />
		<br /><br />
		In order to activate this feature you have to edit the "servers" file in the <a 
    	href="http://svnbook.red-bean.com/en/1.1/ch07.html#svn-ch-7-sect-1"> Runtime Configuration
    	Area</a> and add the following:
    	<pre>
[global]
ssl-client-cert-prompt = yes    	
    	</pre>
    </dd>
</dl>
<p class="tasks">
    Related Tasks
</p>
<p>
    <a href="preferences.html">Preferences: Select Client Adapter</a><br />
    <a href="preferences.html">Preferences: Specify Location of Configuration Area</a><br />
</p>
<p class="reference">
    Related Reference
</p>
<p>
    <a href="http://svnbook.red-bean.com/en/1.1/ch07.html#svn-ch-7-sect-1">SVN Runtime Configuration Area</a><br />
    <a href="http://svnkit.com/kb/user-guide-config-settings.html">SVNKit Configuration Settings</a><br />
</p>
</body>
</html>
